如何在CMake项目中引入OpenCV

您所在的位置:网站首页 python开发包 cmake 如何在CMake项目中引入OpenCV

如何在CMake项目中引入OpenCV

2023-11-07 06:34| 来源: 网络整理| 查看: 265

一、OpenCV下载 opencv下载地址opencv_contrib下载地址 注意opencv以及opencv_contrib的版本最好对应 二、OpenCV编译安装 2.1 cmake编译安装

下载下来后,进入源码目录(即CMakeLists.txt的同级目录)

新建build目录 mkdir build 运行cmake命令,注意针对OpenCV的编译,该命令有许多选项,这里仅给出我自己常用的 所有的OpenCV编译配置选项见官方文档 cmake -D CMAKE_INSTALL_PREFIX=/media/jc/Config/Deepin/local/libs/opencv/4.5_vino \ -D CMAKE_BUILD_TYPE=DEBUG \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D OPENCV_EXTRA_MODULES_PATH=/media/jc/Config/Deepin/local/libs/opencv_contrib/modules \ -D WITH_FFMPEG=ON ..

下面是安装选项的示例

* 选择安装位置 -D CMAKE_INSTALL_PREFIX=/usr/local/opencv * 选择编译方式 -D CMAKE_BUILD_TYPE=RELEASE/DEBUG * 是否生成PKGCONFIG需要的opencv.pc文件 -D OPENCV_GENERATE_PKGCONFIG=ON/OFF * 是否编译Contrib模块(这里的PATH要写到contrib下的modules) -D OPENCV_EXTRA_MODULES_PATH=/home/..../opencv_contrib/modules * 是否只是一个opencv_world动态链接库 -D BUILD_OPENCV_WORLD=ON/OFF * 是否用Qt作为highgui模块的显示框架(需要先安装Qt) -D WITH_Qt=ON/OFF * 是否使用FFMPEG进行视频IO -D WITH_FFMPEG=ON/OFF 运行make命令运行sudo make install命令(如果是安装到/usr/llib等位置就需要root权限) 2.2 Linux直接安装

这种方式没有FindOpenCV.cmake以及OpenCVConfig.cmake。只有opencv.pc,是通过pkg-config方式组织库的。

sudo apt-get install libopencv-dev 三、在Cmake中引入OpenCV 3.1 使用OpenCVConfig.cmake

先设置OpenCV_DIR这个变量为OpenCVConfig.cmake文件所在的目录,然后可以直接使用find_package命令找到opencv库,后面就可以使用include_directories以及target_link_libraries命令引入opencv的库。cmake脚本代码如下:

set(OpenCV_DIR xxxx) # xxxx目录包含OpenCVConfig.cmake find_package(opencv required) # 找到opencv库 include_directories(${OpenCV_INCLUDE_DIRS}) add_executable(${PROJECT_NAME} *.cpp) # *.cpp指要编译的那些源文件 target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBRARIES}) 3.2 使用FindOpenCV.cmake

与3.1类似

3.3 使用opencv.pc cmake_minimum_required(VERSION 3.17) project(C__test) set(CMAKE_CXX_STANDARD 14) set(ENV{PKG_CONFIG_PATH} /usr/lib/x86_x64-linux-gnu/pkgconfig) find_package(PkgConfig REQUIRED) pkg_check_modules(OPENCV REQUIRED IMPORTED_TARGET opencv) #MESSAGE(STATUS ${OPENCV_LIBRARIES}) if(${OPENCV_FOUND}) MESSAGE(${PKG_CONFIG_EXECUTABLE}) MESSAGE(${OPENCV_LIBRARIES}) MESSAGE(${OPENCV_LINK_LIBRARIES}) endif() add_executable(C__test main.cpp) # 注意add_executable要放在target_link_libraries的前面,不然会报错 # 注意这里可以直接使用PkgConfig::OPENCV这种方式CMake文档, FindPkgConfig中有讲,百度cmake pkgconfig doc就有。 target_link_libraries(${PROJECT_NAME} PkgConfig::OPENCV) 四、在Linux中切换OpenCV的版本

有时不同的程序运行需要不同版本的OpenCV,编译安装了多个OpenCV到不同的位置,就需要切换系统链接时的不同版本。下面记录了Linux系统查找动态链接库的几种方式 Linux查找动态链接库的几种方式 默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件

LD_LIBRARY_PATH 这是一个全局的变量rpath gcc编译选项中rpath=xxx,如gcc -L. -Wl,-rpath=/home/bow/all/program/test/lib_version_test -o test main.o -ltestld.so.conf 一般位于/etc/ld.so.conf,有时其中的内容为include /etc/ld.so.conf.d/*.conf,直接包含/etc/ld.so.conf.d目录下所有的conf文件 conf文件中记录库的目录绝对路径,并且由/usr/lib/ld程序使用该配置文件pkg-config程序 pkg-config程序是向configure程序提供系统信息的程序,比如软件版本,库版本,库路径等等。安装pkg-config后会有一个PKG_CONFIG_PATH环境变量,这个环境变量存储保存*.pc文件的目录路径,.pc文件则提供库的各种信息,PKG_CONFIG_PATH搜索的优先级高于默认. https://blog.csdn.net/weixin_38907560/article/details/81449272 ./configure常用pkg-config来检查安装环境 pkg-config --cflags opencv 可以查看opencv的头文件目录 pkg-config --libs opencv 可以查看opencv的库文件目录 注意其中opencv是按照opencv.pc的名字来查找的,如果在PKG_CONFIG_PATH环境变量中找不到,就会去其默认的路径中找如/usr/local/lib/pkgconfig下


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3